A typical operating system includes a file system. The file system provides a mechanism for the storage and retrieval of files and a hierarchical directory structure for the naming of multiple files. More specifically, the file system stores information provided by a user (i.e., data) and information describing the characteristics of the data (i.e., metadata). The file system also provides extensive programming interfaces to enable the creation and deletion of files, reading and writing of files, performing seeks within a file, creating and deleting directories, managing directory contents, etc. In addition, the file system also provides management interfaces to create and delete file systems. File systems are typically controlled and restricted by operating system parameters. In a distributed file system, a single file system may span multiple nodes. The nodes may be located on separate physical clients, or on virtual machines.
In a single server multiple client environment, each client may simultaneously send Input/Output (I/O) requests to the server for storage or retrieval of data in the file system maintained by the server. Accordingly, while a single client may send I/O requests at a throughput that is optimal for the individual client, the client has no means for determining the optimal throughput for the server, which is dependent on the throughput of other clients in the system.